home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xsw / devstats.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  25KB  |  608 lines

  1.  
  2. /***************************************************************************
  3.  *
  4.  *    Copyright (c) 1990-1993        The Santa Cruz Operation, Inc.
  5.  *
  6.  *    All rights reserved.  No part of this program or publication may be
  7.  *    reproduced, transmitted, transcribed, stored in a retrieval system,
  8.  *    or translated into any language or computer language, in any form or
  9.  *    by any means, electronic, mechanical, magnetic, optical, chemical,
  10.  *    biological, or otherwise, without the prior written permission of:
  11.  *
  12.  *        The Santa Cruz Operation , Inc.        (408) 425-7222
  13.  *        400 Encinal St., Santa Cruz, California 95060 USA
  14.  *
  15.  **************************************************************************/
  16. /*
  17.  *
  18.  *    SCCS Stuff
  19.  *
  20.  *    @(#) devstats.c 12.1 95/05/09 SCOINC
  21.  *
  22.  * S002, 25-May-93, rickra
  23.  *     Added support for IDE drives, and reformatted the source.....
  24.  *
  25.  * S001, 01-Jan-93, rickra
  26.  *     Added support for seperate windows.
  27.  *
  28.  * S000, 30-Sep-92, rickra
  29.  *     Added copyright and modification history.
  30.  *    Changed reference to hard coded colors to user configurable colors.
  31. */
  32.  
  33. /*+-------------------------------------------------------------------------
  34.     devstats.c - XSW streams display handler
  35.  
  36.   Defined functions:
  37.     draw_dev_stats_literals(x,y)
  38.     update_dev_stats()
  39.  
  40. --------------------------------------------------------------------------*/
  41. /*+:EDITS:*/
  42. #include <X11/Xlib.h>
  43. #include <X11/Xutil.h>
  44. #include <X11/Intrinsic.h>
  45. #include <X11/Shell.h>
  46. #include <Xm/Xm.h>
  47. #include <Xm/MainW.h>
  48. #include <Xm/DrawingA.h>
  49.  
  50. #include "include/unixincs.h"
  51. #include "include/buttons.h"
  52. #include "include/xsw.h"
  53.  
  54. extern struct NetworkXswStruct *current_server;
  55.  
  56. int             devstats_tlx;
  57. int             devstats_tly;
  58.  
  59.  
  60.  
  61. int
  62. count_active_devices (new_devices, old_devices /* ,num_of_items */ )
  63.  
  64.      struct iotime  *new_devices;
  65.      struct iotime  *old_devices;
  66. /*
  67. int    num_of_itmes;*/
  68. {
  69.  
  70.   int             i;
  71.  
  72.   int             active_count = 0;
  73.  
  74.   for (i = 0; i < 4; i++)
  75.     if (((new_devices[i].io_cnt - old_devices[i].io_cnt) > 0) &&
  76.     ((new_devices[i].io_act - old_devices[i].io_act) > 0))
  77.       active_count++;
  78.  
  79.  
  80.   return (active_count);
  81.  
  82. }
  83.  
  84. /*+-------------------------------------------------------------------------
  85.     update_dev_stats()
  86. --------------------------------------------------------------------------*/
  87. void
  88. update_dev_stats (SP)
  89.      struct NetworkXswStruct *SP;
  90.  
  91. {
  92.   Window          window = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window;
  93.   Display        *display = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].display;
  94.   GC              gc = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].gc;
  95.   XWindowAttributes DrawAreaXYWH = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].DrawAreaXYWH;
  96.   Pixmap          pixmap = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].pixmap;
  97.  
  98.   register int    x, y;
  99.   int             fheight = FHEIGHT;
  100.  
  101.   int             w;
  102.   float           busy;
  103.   float           time_window;
  104.   int             dblk_tot_config;
  105.  
  106.  
  107.   y = devstats_tly + fheight;
  108.   x = devstats_tlx;
  109. /*
  110.   XClearArea (display, window, x, y,
  111.           DrawAreaXYWH.width - x, FHEIGHT * (current_server -> COMMAND_LIST[BUTTON_dev_stats].Y_mult - 1), 0);
  112. */
  113.   XSetForeground (display, gc, background);
  114. /*
  115.   XFillRectangle (display, pixmap, gc, x, y,SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].width -x, FHEIGHT * SP -> COMMAND_LIST[BUTTON_dev_stats].Y_mult - 1);
  116. */
  117.   XFillRectangle (display, pixmap, gc, x, y, SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].width - x, FHEIGHT * SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].height - 1);
  118.  
  119.  
  120.   if (current_server -> got_scsi_disk_stats)
  121.     {
  122.  
  123.       for (w = 0; w < 4; w++)
  124.     {
  125.  
  126.       if (((current_server -> Sdsk_stats[w].io_cnt - current_server -> old_Sdsk_stats[w].io_cnt) > 0) &&
  127.           ((current_server -> Sdsk_stats[w].io_act - current_server -> old_Sdsk_stats[w].io_act) > 0))
  128.         {
  129.           busy = (float) (current_server -> Sdsk_stats[w].io_act - current_server -> old_Sdsk_stats[w].io_act) /
  130.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  131.           if (busy > 100.0)
  132.         busy = 100.0;
  133.  
  134.           time_window = (current_server -> StatPeriod_msec / 1000);
  135.           if (time_window <= 0)
  136.         time_window = 1;
  137.  
  138.           x = devstats_tlx;
  139.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "Sdsk-");
  140.           x += (FWIDTH * 8);
  141.  
  142.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  143.           x += (FWIDTH * 5);
  144.  
  145.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  146.           x += (FWIDTH * 10);
  147.  
  148.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  149.               (float) (current_server -> Sdsk_stats[w].io_resp - current_server -> old_Sdsk_stats[w].io_resp) /
  150.               (float) (current_server -> Sdsk_stats[w].io_act - current_server -> old_Sdsk_stats[w].io_act));
  151.           x += (FWIDTH * 10);
  152.  
  153.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  154.               (float) (current_server -> Sdsk_stats[w].io_cnt - current_server -> old_Sdsk_stats[w].io_cnt) /
  155.               (time_window));
  156.           x += (FWIDTH * 10);
  157.  
  158.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  159.               (float) (ctod (current_server -> Sdsk_stats[w].io_bcnt - current_server -> old_Sdsk_stats[w].io_bcnt)) /
  160.               (time_window));
  161.           x += (FWIDTH * 10);
  162.  
  163.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  164.               10 * (((float) (current_server -> Sdsk_stats[w].io_resp - current_server -> old_Sdsk_stats[w].io_resp) -
  165.                  (float) (current_server -> Sdsk_stats[w].io_act - current_server -> old_Sdsk_stats[w].io_act)) /
  166.                 (float) (current_server -> Sdsk_stats[w].io_cnt - current_server -> old_Sdsk_stats[w].io_cnt)));
  167.           x += (FWIDTH * 10);
  168.  
  169.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  170.               10 * ((float) (current_server -> Sdsk_stats[w].io_act - current_server -> old_Sdsk_stats[w].io_act) /
  171.                 (float) (current_server -> Sdsk_stats[w].io_cnt - current_server -> old_Sdsk_stats[w].io_cnt)));
  172.           x += (FWIDTH * 10);
  173.  
  174.  
  175.           y += +fheight;
  176.         }
  177.     }
  178.     }
  179.  
  180.   if (current_server -> got_scsi_tape_stats)
  181.     {
  182.       for (w = 0; w < 4; w++)
  183.     {
  184.  
  185.       if (((current_server -> Stp_stats[w].io_cnt - current_server -> old_Stp_stats[w].io_cnt) > 0) &&
  186.           ((current_server -> Stp_stats[w].io_act - current_server -> old_Stp_stats[w].io_act) > 0))
  187.         {
  188.           busy = (float) (current_server -> Stp_stats[w].io_act - current_server -> old_Stp_stats[w].io_act) /
  189.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  190.           if (busy > 100.0)
  191.         busy = 100.0;
  192.  
  193.           time_window = (current_server -> StatPeriod_msec / 1000);
  194.           if (time_window <= 0)
  195.         time_window = 1;
  196.  
  197.           x = devstats_tlx;
  198.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "Stp-");
  199.           x += (FWIDTH * 8);
  200.  
  201.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  202.           x += (FWIDTH * 5);
  203.  
  204.  
  205.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  206.           x += (FWIDTH * 10);
  207.  
  208.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  209.               (float) (current_server -> Stp_stats[w].io_resp - current_server -> old_Stp_stats[w].io_resp) /
  210.               (float) (current_server -> Stp_stats[w].io_act - current_server -> old_Stp_stats[w].io_act));
  211.           x += (FWIDTH * 10);
  212.  
  213.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  214.               (float) (current_server -> Stp_stats[w].io_cnt - current_server -> old_Stp_stats[w].io_cnt) /
  215.               (time_window));
  216.           x += (FWIDTH * 10);
  217.  
  218.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  219.               (float) (ctod (current_server -> Stp_stats[w].io_bcnt - current_server -> old_Stp_stats[w].io_bcnt)) /
  220.               (time_window));
  221.           x += (FWIDTH * 10);
  222.  
  223.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  224.               10 * (((float) (current_server -> Stp_stats[w].io_resp - current_server -> old_Stp_stats[w].io_resp) -
  225.                  (float) (current_server -> Stp_stats[w].io_act - current_server -> old_Stp_stats[w].io_act)) /
  226.                 (float) (current_server -> Stp_stats[w].io_cnt - current_server -> old_Stp_stats[w].io_cnt)));
  227.           x += (FWIDTH * 10);
  228.  
  229.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  230.               10 * ((float) (current_server -> Stp_stats[w].io_act - current_server -> old_Stp_stats[w].io_act) /
  231.                 (float) (current_server -> Stp_stats[w].io_cnt - current_server -> old_Stp_stats[w].io_cnt)));
  232.           x += (FWIDTH * 10);
  233.  
  234.  
  235.           y += +fheight;
  236.         }
  237.     }
  238.     }
  239.  
  240.   if (current_server -> got_scsi_rom_stats)
  241.     {
  242.  
  243.       for (w = 0; w < 4; w++)
  244.     {
  245.  
  246.       if (((current_server -> Srom_stats[w].io_cnt - current_server -> old_Srom_stats[w].io_cnt) > 0) &&
  247.           ((current_server -> Srom_stats[w].io_act - current_server -> old_Srom_stats[w].io_act) > 0))
  248.         {
  249.           busy = (float) (current_server -> Srom_stats[w].io_act - current_server -> old_Srom_stats[w].io_act) /
  250.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  251.           if (busy > 100.0)
  252.         busy = 100.0;
  253.  
  254.           time_window = (current_server -> StatPeriod_msec / 1000);
  255.           if (time_window <= 0)
  256.         time_window = 1;
  257.  
  258.           x = devstats_tlx;
  259.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "Srom-");
  260.           x += (FWIDTH * 8);
  261.  
  262.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  263.           x += (FWIDTH * 5);
  264.  
  265.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  266.           x += (FWIDTH * 10);
  267.  
  268.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  269.               (float) (current_server -> Srom_stats[w].io_resp - current_server -> old_Srom_stats[w].io_resp) /
  270.               (float) (current_server -> Srom_stats[w].io_act - current_server -> old_Srom_stats[w].io_act));
  271.           x += (FWIDTH * 10);
  272.  
  273.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  274.               (float) (current_server -> Srom_stats[w].io_cnt - current_server -> old_Srom_stats[w].io_cnt) /
  275.               (time_window));
  276.           x += (FWIDTH * 10);
  277.  
  278.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  279.               (float) (ctod (current_server -> Srom_stats[w].io_bcnt - current_server -> old_Srom_stats[w].io_bcnt)) /
  280.               (time_window));
  281.           x += (FWIDTH * 10);
  282.  
  283.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  284.               10 * (((float) (current_server -> Srom_stats[w].io_resp - current_server -> old_Srom_stats[w].io_resp) -
  285.                  (float) (current_server -> Srom_stats[w].io_act - current_server -> old_Srom_stats[w].io_act)) /
  286.                 (float) (current_server -> Srom_stats[w].io_cnt - current_server -> old_Srom_stats[w].io_cnt)));
  287.           x += (FWIDTH * 10);
  288.  
  289.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  290.               10 * ((float) (current_server -> Srom_stats[w].io_act - current_server -> old_Srom_stats[w].io_act) /
  291.                 (float) (current_server -> Srom_stats[w].io_cnt - current_server -> old_Srom_stats[w].io_cnt)));
  292.           x += (FWIDTH * 10);
  293.  
  294.  
  295.           y += +fheight;
  296.         }
  297.     }
  298.     }
  299.  
  300.   if (current_server -> got_esdi_disk_stats)
  301.     {
  302.  
  303.       for (w = 0; w < 4; w++)
  304.     {
  305.  
  306.       if (((current_server -> esdi_disk_stats[w].io_cnt - current_server -> old_esdi_disk_stats[w].io_cnt) > 0) &&
  307.           ((current_server -> esdi_disk_stats[w].io_act - current_server -> old_esdi_disk_stats[w].io_act) > 0))
  308.         {
  309.           busy = (float) (current_server -> esdi_disk_stats[w].io_act - current_server -> old_esdi_disk_stats[w].io_act) /
  310.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  311.           if (busy > 100.0)
  312.         busy = 100.0;
  313.  
  314.           time_window = (current_server -> StatPeriod_msec / 1000);
  315.           if (time_window <= 0)
  316.         time_window = 1;
  317.  
  318.           x = devstats_tlx;
  319.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "esdi-");
  320.           x += (FWIDTH * 8);
  321.  
  322.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  323.           x += (FWIDTH * 5);
  324.  
  325.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  326.           x += (FWIDTH * 10);
  327.  
  328.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  329.               (float) (current_server -> esdi_disk_stats[w].io_resp - current_server -> old_esdi_disk_stats[w].io_resp) /
  330.               (float) (current_server -> esdi_disk_stats[w].io_act - current_server -> old_esdi_disk_stats[w].io_act));
  331.           x += (FWIDTH * 10);
  332.  
  333.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  334.               (float) (current_server -> esdi_disk_stats[w].io_cnt - current_server -> old_esdi_disk_stats[w].io_cnt) /
  335.               (time_window));
  336.           x += (FWIDTH * 10);
  337.  
  338.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  339.               (float) (ctod (current_server -> esdi_disk_stats[w].io_bcnt - current_server -> old_esdi_disk_stats[w].io_bcnt)) /
  340.               (time_window));
  341.           x += (FWIDTH * 10);
  342.  
  343.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  344.               10 * (((float) (current_server -> esdi_disk_stats[w].io_resp - current_server -> old_esdi_disk_stats[w].io_resp) -
  345.                  (float) (current_server -> esdi_disk_stats[w].io_act - current_server -> old_esdi_disk_stats[w].io_act)) /
  346.                 (float) (current_server -> esdi_disk_stats[w].io_cnt - current_server -> old_esdi_disk_stats[w].io_cnt)));
  347.           x += (FWIDTH * 10);
  348.  
  349.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  350.               10 * ((float) (current_server -> esdi_disk_stats[w].io_act - current_server -> old_esdi_disk_stats[w].io_act) /
  351.                 (float) (current_server -> esdi_disk_stats[w].io_cnt - current_server -> old_esdi_disk_stats[w].io_cnt)));
  352.           x += (FWIDTH * 10);
  353.  
  354.  
  355.           y += +fheight;
  356.         }
  357.     }
  358.     }
  359.  
  360.   if (current_server -> got_wd_disk_stats)
  361.     {
  362.  
  363.       for (w = 0; w < 4; w++)
  364.     {
  365.  
  366.       if (((current_server -> wd_disk_stats[w].io_cnt - current_server -> old_wd_disk_stats[w].io_cnt) > 0) &&
  367.           ((current_server -> wd_disk_stats[w].io_act - current_server -> old_wd_disk_stats[w].io_act) > 0))
  368.         {
  369.           busy = (float) (current_server -> wd_disk_stats[w].io_act - current_server -> old_wd_disk_stats[w].io_act) /
  370.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  371.           if (busy > 100.0)
  372.         busy = 100.0;
  373.  
  374.           time_window = (current_server -> StatPeriod_msec / 1000);
  375.           if (time_window <= 0)
  376.         time_window = 1;
  377.  
  378.           x = devstats_tlx;
  379.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "wd-");
  380.           x += (FWIDTH * 8);
  381.  
  382.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  383.           x += (FWIDTH * 5);
  384.  
  385.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  386.           x += (FWIDTH * 10);
  387.  
  388.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  389.               (float) (current_server -> wd_disk_stats[w].io_resp - current_server -> old_wd_disk_stats[w].io_resp) /
  390.               (float) (current_server -> wd_disk_stats[w].io_act - current_server -> old_wd_disk_stats[w].io_act));
  391.           x += (FWIDTH * 10);
  392.  
  393.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  394.               (float) (current_server -> wd_disk_stats[w].io_cnt - current_server -> old_wd_disk_stats[w].io_cnt) /
  395.               (time_window));
  396.           x += (FWIDTH * 10);
  397.  
  398.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  399.               (float) (ctod (current_server -> wd_disk_stats[w].io_bcnt - current_server -> old_wd_disk_stats[w].io_bcnt)) /
  400.               (time_window));
  401.           x += (FWIDTH * 10);
  402.  
  403.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  404.               10 * (((float) (current_server -> wd_disk_stats[w].io_resp - current_server -> old_wd_disk_stats[w].io_resp) -
  405.                  (float) (current_server -> wd_disk_stats[w].io_act - current_server -> old_wd_disk_stats[w].io_act)) /
  406.                 (float) (current_server -> wd_disk_stats[w].io_cnt - current_server -> old_wd_disk_stats[w].io_cnt)));
  407.           x += (FWIDTH * 10);
  408.  
  409.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  410.               10 * ((float) (current_server -> wd_disk_stats[w].io_act - current_server -> old_wd_disk_stats[w].io_act) /
  411.                 (float) (current_server -> wd_disk_stats[w].io_cnt - current_server -> old_wd_disk_stats[w].io_cnt)));
  412.           x += (FWIDTH * 10);
  413.  
  414.  
  415.           y += +fheight;
  416.         }
  417.     }
  418.     }
  419.  
  420.   if (current_server -> got_cart_tape_stats)
  421.     {
  422.  
  423.       for (w = 0; w < 4; w++)
  424.     {
  425.  
  426.       if (((current_server -> cart_tape_stats[w].io_cnt - current_server -> old_cart_tape_stats[w].io_cnt) > 0) &&
  427.           ((current_server -> cart_tape_stats[w].io_act - current_server -> old_cart_tape_stats[w].io_act) > 0))
  428.         {
  429.           busy = (float) (current_server -> cart_tape_stats[w].io_act - current_server -> old_cart_tape_stats[w].io_act) /
  430.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  431.           if (busy > 100.0)
  432.         busy = 100.0;
  433.  
  434.           time_window = (current_server -> StatPeriod_msec / 1000);
  435.           if (time_window <= 0)
  436.         time_window = 1;
  437.  
  438.           x = devstats_tlx;
  439.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "ct-");
  440.           x += (FWIDTH * 8);
  441.  
  442.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  443.           x += (FWIDTH * 5);
  444.  
  445.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  446.           x += (FWIDTH * 10);
  447.  
  448.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  449.               (float) (current_server -> cart_tape_stats[w].io_resp - current_server -> old_cart_tape_stats[w].io_resp) /
  450.               (float) (current_server -> cart_tape_stats[w].io_act - current_server -> old_cart_tape_stats[w].io_act));
  451.           x += (FWIDTH * 10);
  452.  
  453.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  454.               (float) (current_server -> cart_tape_stats[w].io_cnt - current_server -> old_cart_tape_stats[w].io_cnt) /
  455.               (time_window));
  456.           x += (FWIDTH * 10);
  457.  
  458.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  459.               (float) (ctod (current_server -> cart_tape_stats[w].io_bcnt - current_server -> old_cart_tape_stats[w].io_bcnt)) /
  460.               (time_window));
  461.           x += (FWIDTH * 10);
  462.  
  463.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  464.               10 * (((float) (current_server -> cart_tape_stats[w].io_resp - current_server -> old_cart_tape_stats[w].io_resp) -
  465.                  (float) (current_server -> cart_tape_stats[w].io_act - current_server -> old_cart_tape_stats[w].io_act)) /
  466.                 (float) (current_server -> cart_tape_stats[w].io_cnt - current_server -> old_cart_tape_stats[w].io_cnt)));
  467.           x += (FWIDTH * 10);
  468.  
  469.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  470.               10 * ((float) (current_server -> cart_tape_stats[w].io_act - current_server -> old_cart_tape_stats[w].io_act) /
  471.                 (float) (current_server -> cart_tape_stats[w].io_cnt - current_server -> old_cart_tape_stats[w].io_cnt)));
  472.           x += (FWIDTH * 10);
  473.  
  474.  
  475.           y += +fheight;
  476.         }
  477.     }
  478.     }
  479.  
  480.   if (current_server -> got_floppy_disk_stats)
  481.     {
  482.  
  483.       for (w = 0; w < 4; w++)
  484.     {
  485.  
  486.       if (((current_server -> floppy_disk_stats[w].io_cnt - current_server -> old_floppy_disk_stats[w].io_cnt) > 0) &&
  487.           ((current_server -> floppy_disk_stats[w].io_act - current_server -> old_floppy_disk_stats[w].io_act) > 0))
  488.         {
  489.           busy = (float) (current_server -> floppy_disk_stats[w].io_act - current_server -> old_floppy_disk_stats[w].io_act) /
  490.         (current_server -> StatPeriod_msec * current_server -> hz / 1000) * 100.0;
  491.           if (busy > 100.0)
  492.         busy = 100.0;
  493.  
  494.           time_window = (current_server -> StatPeriod_msec / 1000);
  495.           if (time_window <= 0)
  496.         time_window = 1;
  497.  
  498.           x = devstats_tlx;
  499.           disp_info_text (window, display, gc, DrawAreaXYWH, x, y, pixmap, colorLabel.pixel, "fl-");
  500.           x += (FWIDTH * 8);
  501.  
  502.           disp_long (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%2d", colorNumeric.pixel, w);
  503.           x += (FWIDTH * 5);
  504.  
  505.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel, busy);
  506.           x += (FWIDTH * 10);
  507.  
  508.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  509.               (float) (current_server -> floppy_disk_stats[w].io_resp - current_server -> old_floppy_disk_stats[w].io_resp) /
  510.               (float) (current_server -> floppy_disk_stats[w].io_act - current_server -> old_floppy_disk_stats[w].io_act));
  511.           x += (FWIDTH * 10);
  512.  
  513.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  514.               (float) (current_server -> floppy_disk_stats[w].io_cnt - current_server -> old_floppy_disk_stats[w].io_cnt) /
  515.               (time_window));
  516.           x += (FWIDTH * 10);
  517.  
  518.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  519.               (float) (ctod (current_server -> floppy_disk_stats[w].io_bcnt - current_server -> old_floppy_disk_stats[w].io_bcnt)) /
  520.               (time_window));
  521.           x += (FWIDTH * 10);
  522.  
  523.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  524.               10 * (((float) (current_server -> floppy_disk_stats[w].io_resp - current_server -> old_floppy_disk_stats[w].io_resp) -
  525.                  (float) (current_server -> floppy_disk_stats[w].io_act - current_server -> old_floppy_disk_stats[w].io_act)) /
  526.                 (float) (current_server -> floppy_disk_stats[w].io_cnt - current_server -> old_floppy_disk_stats[w].io_cnt)));
  527.           x += (FWIDTH * 10);
  528.  
  529.           disp_float (window, display, gc, DrawAreaXYWH, pixmap, x, y, "%7.2f", colorNumeric.pixel,
  530.               10 * ((float) (current_server -> floppy_disk_stats[w].io_act - current_server -> old_floppy_disk_stats[w].io_act) /
  531.                 (float) (current_server -> floppy_disk_stats[w].io_cnt - current_server -> old_floppy_disk_stats[w].io_cnt)));
  532.           x += (FWIDTH * 10);
  533.  
  534.  
  535.           y += +fheight;
  536.         }
  537.     }
  538.     }
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545. }                /* end of update_dev_stats */
  546.  
  547. /*+-------------------------------------------------------------------------
  548.     draw_dev_stats_literals(x,y)
  549. --------------------------------------------------------------------------*/
  550. void
  551. draw_dev_stats_literals (SP)
  552.      struct NetworkXswStruct *SP;
  553.  
  554. {
  555.   Window          window = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].window;
  556.   Display        *display = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].display;
  557.   GC              gc = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].gc;
  558.   XWindowAttributes DrawAreaXYWH = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].DrawAreaXYWH;
  559.   Pixmap          pixmap = SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].pixmap;
  560.  
  561.  
  562.   int             x = 0;
  563.   int             y = 0;
  564.   int             x2 = x;
  565.   int             ys = y + FASCENT;
  566.   int             yl1 = y + (FASCENT / 2) + 1;
  567.   int             yl2 = y + (FHEIGHT / 2);
  568.   int             len;
  569.   char           *cptr;
  570.   int             fheight = FHEIGHT;
  571.   int             fwidth = FWIDTH;
  572.   int             line_style = LineSolid;
  573.   int             cap_style = CapButt;
  574.   int             join_style = JoinMiter;
  575.  
  576.   devstats_tlx = x;
  577.   devstats_tly = y;
  578.  
  579.   /* the "background" color */
  580.   XSetForeground (display, gc, colorTitleBarBG.pixel);
  581.   XSetLineAttributes (display, gc, fheight,
  582.               line_style, cap_style, join_style);
  583. /*
  584.   XDrawLine (display, window, gc, x, yl2, DrawAreaXYWH.width - BORDER_EXTRA_WIDTH , yl2);
  585. */
  586.   XDrawLine (display, pixmap, gc, x, yl2, SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].width - BORDER_EXTRA_WIDTH, yl2);
  587.  
  588.   XSetForeground (display, gc, colorTitleBarFG.pixel);
  589.   XSetLineAttributes (display, gc, FASCENT / 2,
  590.               line_style, cap_style, join_style);
  591.   cptr = "Device   #     %Busy     AvQue     r+w/s   blcks/s    AvWait    AvServ ";
  592. /*
  593.   XDrawString (display, window, gc, x2, ys, cptr, len = strlen (cptr));
  594.   XDrawString (display, window, gc, x2 + 1, ys, cptr, len);
  595. */
  596.   XDrawString (display, pixmap, gc, x2, ys, cptr, len = strlen (cptr));
  597.   XDrawString (display, pixmap, gc, x2 + 1, ys, cptr, len);
  598.   x2 += (fwidth * len) + FGAP + 1;
  599. /*
  600.   XDrawLine (display, window, gc, x2, yl1, DrawAreaXYWH.width - BORDER_EXTRA_WIDTH , yl1);
  601. */
  602.   XDrawLine (display, pixmap, gc, x2, yl1, SP -> SEPERATE_WINDOWS_LIST[BUTTON_dev_stats].width - BORDER_EXTRA_WIDTH, yl1);
  603.  
  604. }                /* end of draw_streams_literals */
  605.  
  606. /* vi: set tabstop=4 shiftwidth=4: */
  607. /* end of sysinfo.c */
  608.